#     序列化   与   反序列化
#   Serialize       Deserialize

# 代码在内存中
# 字典  在 内存

#  临时存储 --》 断电会丢 ；
#  硬盘  --》断电不会丢。

#  内存当中的数据结构  --  不能直接存在硬盘
#                 字符串  可以
#        bytes -- 字节流  可以

#  将内存当中的数据结构   ------》  存到硬盘
#                        序列化
#                 硬盘  ------ 》  内存
#                         反序列

# 网络数据传输 （ 字符串 或  字节流 ）
#                           bytes


#  序列化：就是把不可传输的对象        转换为可存储或可传输的过程；
#  反序列：就是把在磁盘，等介质的数据  转换为对象

# 序列化与反序列化的目的
#   1.以某种存储形式使自定义对象持久化；
#   2.将对象从一个地方传递到另一个地方；
#   3.使程序更具维护性。

# 概括来说
#    序列化
#        是指将对象实例的状态存储到存储媒体（磁盘）等其他介质的过程；
#         在此过程中将对象转换为字节流（bytes），再讲 bytes 写入数据流
#   反序列
#         将对象进行反序列时，创建出于原对象相同的副本



import pickle

#      序列化
#    dumps  : 倾倒
res = pickle.dumps([1,2,3])
print(res)
#     b'\x80\x03]q\x00(K\x01K\x02K\x03e.'
print(type(res))
#      <class 'bytes'>

f = open('dump.txt','wb')
f.write(res)
f.close()



#   反序列化
#         loads : 加载
r = pickle.loads(res)
print(r)
#         [1, 2, 3]
print(type(r))
#          <class 'list'>


# dump  (Object,字节流)
#    直接写到文件中
#  序列化


#  f1 = open('n.txt','rb')
# load （f1）
#  反序列化  成 内存中的数据结构


#   dumps is loads
#        False
#     不是同一个




